/**
 * 给定一个字符串 s，找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1：

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2：

输入: "cbbd"
输出: "bb"
* */  

/**
 * @param {string} s
 * @return {string}
 */
// var longestPalindrome = function(s) {
//   if(!s) return ''
//   let strLen = s.length
//   let item = ''
//   let obj = {}
//   if(strLen === 1) return s
//   for(let idx = 0; idx < strLen; idx++) {
//     item = s[idx]
//     if(!isNaN(obj[item])) {
//       return s.slice(obj[item], idx + 1)
//     } else {
//       obj[item] = idx
//     }
//   }
//   return s[0]
// };
// var longestPalindrome = function(s) {
//   function isPalindrome(str) {
//     var len = str.length
//     var middle = parseInt(len / 2)
//     for(var i = 0; i < middle; i++) {
//       if(str[i] != str[len - i - 1]) {
//         return false
//       }
//     }
//     return true
//   }
//   var ans = ''
//   var max = 0
//   var len = s.length
//   for(var i = 0;i < len; i++) {
//     for (var j = i + 1; j <= len; j++) {
//       var tempstr = s.substring(i, j)
//       if(isPalindrome(tempstr) && tempstr.length > max) {
//         ans = s.substring(i, j)
//         max = tempstr.length
//       }
//     }
//   }
//   return ans
// }
var longestPalindrome = function(s) {
  if(!s || s.length < 2){
      return s;
  }
  var s_f = s.split('').reverse().join('');
  var resultStr = s[0];
  var maxLen = 1;
  var tmpLen = 1;
  var maxStrIndex = 0;
  var len = s.length;
  //判断字符串是否回文
  function isPalinerome(i,r){
      if(len - i - 1 == r -tmpLen + 1){
          return true
      }
      return false;
  }
  //初始化二维数组
  var len = s.length;
  var arr = new Array(len);
  for(var i = 0;i<len;i++){
      arr[i] = [];
      for(var r = 0;r<len;r++){
          arr[i][r] = 0
      }
  }
  for(var i = 0;i<len;i++){
      for(var r=0;r<len;r++){
          if(s[i] == s_f[r]){
              if(i==0 || r==0){
                  arr[i][r] = 1
              }else{
                  arr[i][r] = arr[i-1][r-1] + 1
                  tmpLen = arr[i][r]
              }
              if(tmpLen > maxLen && isPalinerome(i,r)){
                  maxStrIndex = r;
                  maxLen = tmpLen;
                  resultStr =  s.substring(i-tmpLen+1,i+1);
              }
          }
      }
  }
  return resultStr;
};
// 看不懂
console.log(longestPalindrome('babad'))